Skip to content

[Feat] Ubuntu 26.04 support - #1769

Merged
mylinuxforwork merged 4 commits into
mylinuxforwork:mainfrom
solidus1983:feature/ubuntu-26-04-support
Oct 1, 2026
Merged

mylinuxforwork merged 4 commits into
mylinuxforwork:mainfrom
solidus1983:feature/ubuntu-26-04-support

Conversation

@solidus1983

@solidus1983 solidus1983 commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds support for installing ML4W on Ubuntu 26.04.

Changes

  • Feature
  • Bug Fixes
  • Improved
  • Documentation
  • Other

Context

There's currently no official way to install ML4W on Ubuntu. This adds the Ubuntu preflight, post and package scripts, plus a few fixes to shared files that came up while testing.

Ubuntu setup (new files)

  • setup/dependencies/packages-ubuntu, setup/preflight-ubuntu.sh and setup/post-ubuntu.sh, following the same layout as Arch/Fedora/openSUSE.
  • preflight-ubuntu.sh enables universe and restricted and adds the repos Ubuntu doesn't ship: the cppiber Hyprland PPA, the danklinux PPA (cliphist), the Charm repo (gum), and the Mozilla Team PPA, pinned so firefox installs as a .deb instead of the snap. It also removes swww if it's installed.
  • post-ubuntu.sh builds quickshell, awww, nwg-displays and grim from source and installs matugen with cargo. grim is rebuilt because Ubuntu's package has no JPEG support, which breaks the default .jpg screenshot filename.
  • Installs Quickshell Overview and ML4W Dock with their official installers.
  • Installs ML4W Dotfiles Settings by cloning it and running make install, because its setup.sh only detects pacman/dnf/zypper and exits on Ubuntu.
  • Installs JetBrains Mono Nerd Font and Font Awesome 7. The fonts-font-awesome package is 4.7 and doesn't provide the "Font Awesome 7" family waybar uses.
  • Adds ConditionEnvironment drop-ins so hyprpolkitagent only runs under Hyprland and snapd-desktop-integration only under GNOME, and hides the mate-polkit autostart entry.
  • Masks the waybar, hypridle and hyprsunset user units, since autostart.lua already launches them.
  • Long-running steps go through run_quiet/LOG_FILE, which the installer provides (same as the other distros). curl downloads retry on network errors.

Shared changes (all distros)

  • autostart.lua: starts hyprpolkitagent.service and falls back to polkit-gnome when that unit doesn't exist. Skips launching swaync when post-ubuntu.sh has set up D-Bus activation, because starting it both ways raced and failed with "already running!".
  • post.sh: installs walker and elephant through ml4w-walker, which supports Arch, Fedora, openSUSE and Ubuntu 25.10+. ml4w-autostart now runs ml4w-walker start. Without it elephant never starts and walker hangs.
  • launcher.sh: fixes the walker launcher. It called ~/.config/walker/launch.sh, which was removed upstream on 4 August, so choosing walker did nothing. It now runs walker -t ml4w.
  • Restores the ml4w walker theme (.config/walker/themes/ml4w/style.css) and its matugen template, both removed upstream in early August, so walker matches the system colours.
  • New matugen template (hyprtoolkit-colors.conf) to theme the hyprpolkitagent dialog.

How Has This Been Tested?

  • Tested on Arch Linux/Based Distro.
  • Tested on Fedora Linux/Based Distro.
  • Tested on openSuse.
  • Tested on Ubuntu 26.04

Tested in a VM while building, then a clean install on bare metal.

The grim build was added afterwards. I built grim 1.5.0 with the same meson flags and took a JPEG screenshot with it, but haven't run the full install with that step yet.

The changes to autostart.lua, post.sh, launcher.sh and ml4w-autostart affect every distro but have only been tested on Ubuntu.

Checklist

  • My code follows the style guidelines of this project.
  • I have performed a self-review of my code.
  • I have commented on my code, particularly in hard-to-understand areas.
  • My changes do not introduce new warnings.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have made corresponding changes to the documentation
  • New and existing unit tests pass locally with my changes.

Screenshots

Screenshot from 2026-08-02 14-30-32 Screenshot from 2026-08-02 14-28-55 Screenshot from 2026-08-02 14-27-58 Screenshot from 2026-08-02 14-26-42 Screenshot from 2026-08-02 14-26-06

Additional Notes

The installer (ml4w-dotfiles-installer) will need a separate PR to recognise Ubuntu and run these scripts.

@mylinuxforwork

Copy link
Copy Markdown
Owner

I am looking forward testing this.

@solidus1983

Copy link
Copy Markdown
Contributor Author

I am looking forward testing this.

I can't wait to hear feedback and what changes are possibly needed.
If Testing works well and there are no effects on the other distros, I will then change PR from draft.

However, which repo do I need to edit to make the online command detect Ubuntu?

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from 4b92931 to d9e73c6 Compare August 2, 2026 18:23
@solidus1983

Copy link
Copy Markdown
Contributor Author

Updated my branch to the latest main

@solidus1983 solidus1983 mentioned this pull request Aug 2, 2026
1 task done
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from d9e73c6 to e66b031 Compare August 3, 2026 16:09
@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork You will need the installer script, which is https://github.com/solidus1983/dotfiles/blob/test/ubuntu-26-04-vm-install/install-ubuntu.sh if you want to test.

I have also rebased from main again.

@solidus1983

Copy link
Copy Markdown
Contributor Author

My laptop died so awaiting for engineer to come out to replace main board after I will rebase again.

@mylinuxforwork

Copy link
Copy Markdown
Owner

Good look with your Laptop. No stress. I have just released ML4W OS 2.15 and Ubuntu support would be next ;-)

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from e66b031 to b795983 Compare August 5, 2026 16:02
@solidus1983

Copy link
Copy Markdown
Contributor Author

Right i have now rebased my branches with the latest changes, and my laptop is now working again!

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from b795983 to 2e2f0a4 Compare August 14, 2026 10:52
@solidus1983

Copy link
Copy Markdown
Contributor Author

Rebased on the latest main.

@solidus1983
solidus1983 marked this pull request as ready for review August 14, 2026 13:51
@solidus1983
solidus1983 marked this pull request as draft August 14, 2026 13:57
@solidus1983

Copy link
Copy Markdown
Contributor Author

Testing some changes to Ubuntu scripts during a code cleanup.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 2 times, most recently from 3d9601f to 8b9aac1 Compare August 14, 2026 15:55
@solidus1983
solidus1983 marked this pull request as ready for review August 14, 2026 16:10
@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork I am now ready for code review.

Should be done now, and will keep the rebases up to date from this point forward.

Awaiting your feedback, and will make changes where requested to do so.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 2 times, most recently from 234c925 to 396eb72 Compare August 20, 2026 20:04
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 5 times, most recently from 2294bcb to 8215656 Compare August 31, 2026 19:49
@solidus1983

Copy link
Copy Markdown
Contributor Author

Currently away for Training, will rebase with the main branch once I am able to do so.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from 8215656 to b1ab6d7 Compare September 23, 2026 20:08
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 3 times, most recently from d2e51a3 to 1b4decb Compare September 29, 2026 11:38
@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork The work is now ready, and the installation script is still in the testing branch.

Any scripts that still perform checks on the OS that go to exit 1 i have for now kept in post-ubuntu.sh; I will remove them once the checks have been updated.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 2 times, most recently from c8b2d07 to bb6a32d Compare September 29, 2026 13:06
@solidus1983

Copy link
Copy Markdown
Contributor Author

Fixing some bugs quickly

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from abaf60e to dcfebd8 Compare September 29, 2026 14:57
Add preflight, post and package list scripts for Ubuntu, following the
same layout as Arch, Fedora and openSUSE.

preflight-ubuntu.sh enables universe and restricted and adds the repos
Ubuntu doesn't ship: the cppiber Hyprland PPA, the danklinux PPA for
cliphist, the Charm repo for gum, and the Mozilla Team PPA, pinned so
that firefox installs as a .deb rather than the snap. It also removes
swww if it's installed.

post-ubuntu.sh:
- Builds quickshell, awww, walker, elephant and nwg-displays from
  source, and installs matugen with cargo. None of these are packaged
  for Ubuntu.
- Installs Quickshell Overview, ML4W Dock and ML4W Dotfiles Settings.
  The settings app's setup.sh only knows pacman, dnf and zypper, so it
  is cloned and installed with make install instead.
- Installs JetBrains Mono Nerd Font and Font Awesome 7.
- Adds ConditionEnvironment drop-ins so hyprpolkitagent only runs under
  Hyprland and snapd-desktop-integration only under GNOME, and hides
  the mate-polkit autostart entry.
- Masks the waybar, hypridle and hyprsunset user units, which would
  otherwise start alongside the copies autostart.lua launches.

autostart.lua starts hyprpolkitagent.service and falls back to
polkit-gnome when that unit doesn't exist. It also skips launching
swaync when post-ubuntu.sh has set up D-Bus activation, because
starting it both ways raced and failed with "already running!".

Add a matugen template to theme the hyprpolkitagent dialog.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
ml4w-walker is the new upstream installer for walker, elephant and the
providers. It supports Arch, Fedora, openSUSE and Ubuntu 25.10+, so
call it from post.sh and drop the cargo/go builds from post-ubuntu.sh.
Walker now gets installed on every distro.

Add `ml4w-walker start` to ml4w-autostart. Without it elephant is never
started and walker hangs waiting for its socket.

launcher.sh called ~/.config/walker/launch.sh, which upstream removed
along with the rest of .config/walker, so choosing walker as the
launcher did nothing. Call walker directly.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
Upstream removed .config/walker, including the ml4w theme, and the
matugen walker template in early August. Walker still reads themes
from ~/.config/walker/themes, so restore the theme's style.css as it
was and the matugen template that writes ~/.config/walker/colors.css.
launcher.sh now passes -t ml4w so walker uses it.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
Ubuntu's grim package is built without JPEG support. The default
screenshot filename ends in .jpg, so screenshot.sh fails with "jpeg
support disabled" and nothing gets saved.

Build grim 1.5.0 with -Djpeg=enabled and install it to /usr/local/bin,
which comes before the packaged grim on PATH. The step is skipped when
/usr/local/bin/grim already links libjpeg.

Tested by building 1.5.0 with the same flags and taking a JPEG
screenshot with it. The post-ubuntu.sh step itself hasn't been run yet.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from b637930 to 75b702b Compare September 29, 2026 16:20
@solidus1983

Copy link
Copy Markdown
Contributor Author

Right, I am now finished with this PR.

@mylinuxforwork, happy testing.

@mylinuxforwork

Copy link
Copy Markdown
Owner

Great. Thank you. Will start testing soon.

@mylinuxforwork
mylinuxforwork merged commit 6084b3e into mylinuxforwork:main Oct 1, 2026
@solidus1983
solidus1983 deleted the feature/ubuntu-26-04-support branch October 1, 2026 15:57
@mylinuxforwork

Copy link
Copy Markdown
Owner

@solidus1983 I have finalized a first version. Incuding a new version for the ML4W Dotfiles Installer.
Please try

bash <(curl -s https://ml4w.com/os/rolling)

on Ubuntu.

@solidus1983

solidus1983 commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor Author

@solidus1983 I have finalized a first version. Incuding a new version for the ML4W Dotfiles Installer. Please try

bash <(curl -s https://ml4w.com/os/rolling)

on Ubuntu.
@mylinuxforwork
Seems to be an issue with the bash command itself as it returns

/proc/self/fd/18: line 1: syntax error near unexpected token `newline'
/proc/self/fd/18: line 1: `<!DOCTYPE html>'

However, going to the link https://ml4w.com/os/rolling and saving it as a .sh file and then running it after giving it the permissions chmod +x it runs and installs like a charm.

Will test the .sh trick on the VM as well.

@solidus1983

solidus1983 commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork

Right, tested on a clean Ubuntu VM install; there were four errors and two warnings

image image

@solidus1983

Copy link
Copy Markdown
Contributor Author

Rebooting into hyprland did work however after

@mylinuxforwork

Copy link
Copy Markdown
Owner

bash <(curl -s https://ml4w.com/os/rolling)

The command is working fine. Just running test installations.

@mylinuxforwork

Copy link
Copy Markdown
Owner

Just installed it without any issues on Ubuntu Workstation. Warnings are fine.

Thanks again for you support. Launch is planned for the weekend, latest for Monday.

@solidus1983

Copy link
Copy Markdown
Contributor Author

bash <(curl -s https://ml4w.com/os/rolling)

The command is working fine. Just running test installations.

Might be the network I am connected too might be triggering IDS as manually going to the script in browser does stated about checking before letting me in.

Can't wait Debian is next on my list.

@solidus1983

Copy link
Copy Markdown
Contributor Author

Update: Starting the work to add Debian 13 support now, the way Ubuntu is now in main, so without my additions that you removed.

@solidus1983

solidus1983 commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor Author

Also you can use my real name William Rogers i noticed you struggled with my handle name

@mylinuxforwork

Copy link
Copy Markdown
Owner

Also you can use my real name William Rogers i noticed you struggled with my handle name

Sure. Will add your name to https://ml4w.com/os/credentials/thankyou and will mention you in the next video description.

@mylinuxforwork

Copy link
Copy Markdown
Owner

Update: Starting the work to add Debian 13 support now, the way Ubuntu is now in main, so without my additions that you removed.

Great. But now stress. Every support for a distro means a lot of maintenance and testing. Let's start with Ubuntu first.

@solidus1983

Copy link
Copy Markdown
Contributor Author

Update: Starting the work to add Debian 13 support now, the way Ubuntu is now in main, so without my additions that you removed.

Great. But now stress. Every support for a distro means a lot of maintenance and testing. Let's start with Ubuntu first.

Will be taking my time, will also try and make it easier for you as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants